package com.project.mapper;

import com.github.pagehelper.PageInfo;
import com.project.bean.EmployeeBean;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Update;

import java.util.List;

@Mapper
public interface IEmployeeMapper {
    /**
     * 添加员工
     * @param em 员工对象
     */
    @Insert("insert into t_employee(e_name,e_phone,e_speciality,e_birthday,e_inDate,e_face,e_status,e_money)values" +
            "(#{name},#{phone},#{speciality},#{birthday},#{inDate},#{face},#{status},#{money})")
    void add(EmployeeBean em);

    /**
     * 将员工状态修改为离职，同时该员工的正在进行的项目（项目完成时间为”未完成“）进度结束时间修改为现在
     * @param id 员工id
     * @param status 员工状态
     */
    @Update("update t_employee set e_status=#{status} where pk_employeeId=#{id}")
    void update(@Param("id") int id, @Param("status") String status);

    /**
     * 按id修改员工信息
     * @param id 员工id
     * @param phone 员工手机号
     * @param money 员工新工资
     */
    @Update("update t_employee set e_phone=#{phone},e_money=#{money} where pk_employeeId=#{id}")
    void updateInfo(@Param("id") int id,@Param("phone") String phone,@Param("money") int money);

    /**
     * 按id查询员工，同时查询员工参与所有的项目信息
     * @param id 员工id
     * @return 员工对象
     */
    EmployeeBean findById(int id);

    /**
     * 动态条件分页查询员工，同时按选择条件将结果进行排序
     * @param name 员工姓名
     * @param speciality 员工专长
     * @param status 员工状态
     * @param orderItem 排序条件
     * @return 集合
     */
    List<EmployeeBean> findByItem(@Param("name") String name, @Param("speciality") String speciality,
                                  @Param("status") String status,@Param("orderItem") String orderItem);

    /**
     * 动态查询没参与指定项目的在职人员
     * 其中项目id和员工状态为固定条件，姓名和专长为动态条件
     * @param proId 项目id
     * @param name 员工姓名
     * @param speciality 专长
     * @return 员工列表
     */
    List<EmployeeBean> findOther(@Param("proId") int proId, @Param("name") String name,
                                 @Param("speciality") String speciality);

    /**
     * 按id查询员工信息，同时查询该员工正在进行的项目名称。以及项目的开始时间
     * @param id 员工id
     * @return 员工对象
     */
    EmployeeBean findByIdRunTime(int id);
}
